package utils

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type InfoResult struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    any    `json:"data"`
}

func NewInfoResult(c *CodeAndMsg) *InfoResult {
	return &InfoResult{Code: c.Code, Message: c.Error()}
}

// R 表示返回响应
func (i *InfoResult) R(c *gin.Context, data any) {
	i.Data = data
	c.JSON(http.StatusOK, i)
}

// CheckError 检查错误是否是自定义错误类型 并且返回到gin响应中去
func CheckError(c *gin.Context, err error) {
	if myErr, ok := err.(*CodeAndMsg); ok {
		NewInfoResult(myErr).R(c, nil)
		return
	}
	//log.Errorf("%+v", err)
	NewInfoResult(&CodeAndMsg{Code: 500, Message: err.Error()}).R(c, nil)
}
